package war.redes;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ServidorTeste {
	private JogadorRede jogadorRede;
	private int valorRecebidoCliente;
	private int valorEnviadoServidor;
	private PrintWriter escritor;
	List<PrintWriter> escritores = new ArrayList<>();
	public static int xServer =0, yServer = 0;
	
	public ServidorTeste() throws IOException{
		iniciar();
		jogadorRede = new JogadorRede(".\\images\\jogador\\nave.png");
		jogadorRede.setNumEspecial(5);
		jogadorRede.setX(980);
	}
	
	public void iniciar() throws IOException {
		
	ServerSocket server;
		try {
			server = new ServerSocket(4000);
			System.out.println("Servidor Iniciado");
			while(true){
				Socket socket = server.accept();
				new Thread(new EscutaCliente(socket)).start();
				PrintWriter p = new PrintWriter(socket.getOutputStream());
				escritores.add(p);
		    }
		} catch (IOException e) {}			
	}
	public  void encaminharParaTodos(String texto){
		for (PrintWriter w : escritores) {
			try{
				w.println(texto);
				w.flush();
			}catch(Exception e){
				
			}
		}
	}
	
	public JogadorRede getJogadorRede() {
		return jogadorRede;
	}

	public void setJogadorRede(JogadorRede jogadorRede) {
		this.jogadorRede = jogadorRede;
	}

	private class EscutaCliente implements Runnable{
		
		
		Scanner leitor;
		public EscutaCliente(Socket socket){
			try {
				leitor = new Scanner(socket.getInputStream());
			} catch (Exception e) {}
		}
		@Override
		public void run() {
			String texto;
			try{
			while((texto = leitor.nextLine()) != null ){
				System.out.println(texto);
				encaminharParaTodos(texto);
			}
			}catch(Exception x){}
		}
	}	

	public int getValorRecebidoCliente() {
		return valorRecebidoCliente;
	}
	
	public void setValorRecebidoCliente(int valorRecebidoCliente) {
		this.valorRecebidoCliente = valorRecebidoCliente;
	}
	
	public int getValorEnviadoServidor() {
		return valorEnviadoServidor;
	}
	
	public void setValorEnviadoServidor(int valorEnviadoServidor) {
		this.valorEnviadoServidor = valorEnviadoServidor;
	}
	public void enviarCoordendasParaCliente(int x, int y) {
		
		System.out.println(""+jogadorRede.getY());
	}
}
